package com.shop.www.service.Impl;

import com.shop.www.dao.CartItemDAO;
import com.shop.www.model.Cart;
import com.shop.www.model.CartItem;
import com.shop.www.model.Commodity;
import com.shop.www.model.User;
import com.shop.www.service.CartItemservice;
import com.shop.www.service.Commodityservice;
import com.shop.www.service.Userservice;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CartItemserviceImpl implements CartItemservice {
    private CartItemDAO cartItemDAO;
    private Userservice userservice;
    private Commodityservice commodityservice;
    @Override
    public void addCartItem(CartItem cartItem) {
        cartItemDAO.addcartItem(cartItem);
    }

    @Override
    public void updateCartItem(CartItem cartItem) {
        cartItemDAO.updatecartItem(cartItem);
    }

    @Override
    public void delCartItem(CartItem cartItem) {
        cartItemDAO.delcartItem(cartItem);
    }

    @Override
    public List sellerlist(User user) {
        return cartItemDAO.getsellerlist(user);
    }

    @Override
    public void addorupdateCartItem(CartItem cartItem, Cart cart) {
        if(cart!=null){//如果该用户存在购物车
            Map<Integer,CartItem>  cartItemMap= cart.getCartItemMap();
            if(cartItemMap==null){//如果购物车为空
                cartItemMap = new HashMap<>();
            }
            if(cartItemMap.containsKey(cartItem.getCommodity_ID())){//如果该商品已在购物车中
                CartItem cartItem1 = cartItemMap.get(cartItem.getCommodity_ID());
            cartItem1.setBuycount(cartItem1.getBuycount()+1);
            updateCartItem(cartItem1);
            }else {
                addCartItem(cartItem);
            }
        }else {
            addCartItem(cartItem);
        }

    }

    @Override
    public Cart getCart(User user) {
        List<CartItem> list= cartItemDAO.getCartItem(user);
        for(CartItem cartItem :list){
            User buyer = userservice.getuserByID(cartItem.getUser_ID());
            cartItem.setBuyer(buyer);
            Commodity commodity = commodityservice.getcommodityByID(cartItem.getCommodity_ID());
            //如果购物车中商品数量大于库存，购买量将重置到库存量
            if(cartItem.getBuycount()>commodity.getInventory()){
                cartItem.setBuycount(commodity.getInventory());
            }

            cartItem.setCommodity(commodity);
            cartItem.getMoney();
            if(cartItem.getBuycount()==1){
                boolean reducelock = true;
                cartItem.setReducelock(reducelock);
        }
            if(cartItem.getBuycount().equals(commodity.getInventory())){
                boolean addlock = true;
                cartItem.setAddlock(addlock);
            }
        }
        //将购物车详情添加至购物车
        Map<Integer,CartItem> cartItemMap = new HashMap<>();
        Integer lock = 0;
        for(CartItem cartItem :list){
            cartItemMap.put(cartItem.getCommodity().getCommodity_ID(),cartItem);
            if(!cartItem.getCommodity().getState().equals("1")){
                 lock =1;
            }
        }
        Cart cart = new Cart();
        cart.setLock(lock);
        cart.setCartItemMap(cartItemMap);
        cart.getTotalcount();
        cart.getTotalMoney();
          return cart;
    }


}
